package com.nnnu.wsnackshop.pojo.vo;

import lombok.Data;

import java.math.BigDecimal;
import java.time.LocalDateTime;
import java.util.List;

/**
 * 订单返回VO
 */
@Data
public class OrderVO {

    /**
     * 订单ID
     */
    private Long id;

    /**
     * 订单编号
     */
    private String orderNo;

    /**
     * 状态：PENDING_PAYMENT=待付款, PENDING_DELIVERY=待发货,
     * PENDING_RECEIVE=待收货, COMPLETED=已完成, CANCELLED=已取消
     */
    private String status;

    /**
     * 支付状态：0=pending,1=paid,2=refunded
     */
    private Integer payStatus;

    /**
     * 订单状态：0=new,1=accepted,2=packing,3=delivering,4=completed,5=cancelled
     */
    private Integer orderStatus;

    /**
     * 支付方式：wechat=微信, alipay=支付宝, balance=余额
     */
    private String paymentMethod;

    /**
     * 配送方式：local=同城配送, self=自提
     */
    private String deliveryType;

    /**
     * 收货地址
     */
    private AddressVO address;

    /**
     * 商品总额
     */
    private BigDecimal goodsAmount;

    /**
     * 运费
     */
    private BigDecimal deliveryFee;

    /**
     * 优惠金额
     */
    private BigDecimal discountAmount;

    /**
     * 实付金额
     */
    private BigDecimal totalAmount;

    /**
     * 创建时间
     */
    private LocalDateTime createdAt;

    /**
     * 创建时间（格式化字符串）
     */
    private String createdAtStr;

    /**
     * 支付时间
     */
    private LocalDateTime paymentTime;

    /**
     * 支付时间（格式化字符串）
     */
    private String paymentTimeStr;

    /**
     * 发货时间
     */
    private LocalDateTime deliveryTime;

    /**
     * 发货时间（格式化字符串）
     */
    private String deliveryTimeStr;

    /**
     * 完成时间
     */
    private LocalDateTime completedTime;

    /**
     * 完成时间（格式化字符串）
     */
    private String completedTimeStr;

    /**
     * 取消时间
     */
    private LocalDateTime cancelledTime;

    /**
     * 取消时间（格式化字符串）
     */
    private String cancelledTimeStr;

    /**
     * 取消原因
     */
    private String cancelReason;

    /**
     * 备注
     */
    private String remark;

    /**
     * 物流信息
     */
    private DeliveryVO delivery;

    /**
     * 是否已评价
     */
    private Boolean reviewed;

    /**
     * 订单商品
     */
    private List<OrderItemVO> items;
}